Machine vision systems that perform measurement, inspection, alignment of objects, optical character recognition, and/or decoding of symbology (e.g. bar codes, two-dimensional codes, alphanumeric, binary, Kanji, Unicode, any other encoding of data, etc.) are used in a wide range of applications and industries. In an example, a code reader can be used to acquire an image of an object that is believed to contain one or more barcodes, two-dimensional codes or other symbol types. The image is processed to identify code features, which are then decoded by a decoding process and/or processor to obtain the alphanumeric data represented by the code. A common application is to track objects (e.g., packages) moving along a line (e.g., a conveyor system) in logistics and shipping operations. Packages have codes (e.g., bar codes, two-dimensional codes, symbols, etc.) applied to them for identification purposes. In some systems, a code reader is positioned adjacent to the conveyor for reading the codes on the packages as they pass by the code reader. To track objects on the conveyor, the system associates codes read by the code reader with packages.
Some existing systems use a laser-scanner or a line-scan camera to read the codes on the objects. However, these systems have shortcomings. Systems using a laser-scanner typically cannot read two dimensional symbols (e.g., two-dimensional codes or text). Systems using a line-scan camera typically have limited depth of focus, requiring additional complexity to adjust the line-scan camera's focus to account for objects of different height.